<?php
/**
 * egpusersEntry.php
 * 
 * (C) 2009, tetsuya.odaka(EzoGP).
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* 
 * EGPUSERSの登録をします。
 * 
 * author	; tetsuya.odaka
 * date		; 2009/6/3
 * 
*/
	// 前準備
	include("../Myznala/myHeader.inc.php");

	require_once("../Myznala/MyConverter.class.php");
	require_once('../Myznala/MyDBConnection.class.php');
	require_once('EgpusersDao.class.php');
	
	/*
	 * 変数定義
	 */
	// 遷移先のテンプレート名
	$myTemplate="../examples-egpusers/templates/egpusersEntry.tpl";

	// パラメータをサニタイズして配列に入れる。
	$cObj = new MyConverter();
	$reqParm = $cObj->getRequestParameters();
	
	/*
	 * 入力エラーチェック；
	 * エラーがあれば、入力画面にもどす。	
	*/
	$cnObj = new MyDBConnection();
	$conn = $cnObj->getConnection(); // connection取得
	
	/* 
	 * 入力チェック関数（内部関数）でエラーを取り出す 
	*/
	$egpObj=new EgpusersDao();
	$myErrArray = validate($conn, &$reqParm, &$egpObj);
	
	// エラーありの場合
	if(count($myErrArray) > 0){
		$myTplData=array(
			// 表示ボタンのセット
			'button_array'	=>setButton(),
			// エラーメッセージのセット
			'myErrArray'	=>$myErrArray,
			'myLoginUser'		=>$myLoginUser,
			'myPageTitle'	=>'EGPUSERS_Entry',
			'myAppName'	=>'examples-egpusers'
		);
		
		// connectionのリリース
		$cnObj->closeConnection($conn);
		
		// 後処理
		include("../Myznala/myFooter.inc.php");
		return; 
	}
	
	// connectionのリリース
	$cnObj->closeConnection($conn);
	
	/* 
	 * 登録用データを作成します。 
	*/
	$egpObj = new EgpusersDao();
	$conn = $cnObj->getConnection(); // connection取得
	
	/*
	 * データにnull値があった場合にデフォルト値を設定し、
	 * データに入力があった場合にはサニタイズする。
	*/
	// ID （採番）
	$newId = $egpObj->getNewId($conn);
	$egpObj->setId($newId);

	// E-mail(必須入力)
	$egpObj->setEmail($reqParm['email']);
	
	// Password(必須入力)
	$egpObj->setPassword($reqParm['password']);

	// 名前（漢字）(必須入力)
	$egpObj->setName($reqParm['name']);
	
	// 名前（よみ）
	if($reqParm['nameyomi'] == null || $reqParm['nameyomi'] == ''){
		$reqParm['nameyomi'] = '未入力';
	}
	$egpObj->setNameYomi($reqParm['nameyomi']);

	// 役職
	$egpObj->setRole($reqParm['role']);

	/*
	 * データを登録
	 */
	
	$conn->beginTransaction();
	$egpObj->insert($conn);
	$conn->commit();
	
	// connectionのリリース
	$cnObj->closeConnection($conn);
	
	/* 正常終了メッセージ */
	$myMsgArray=array();
	$msgObj=new MsgBean();
	$msgObj->setMessage("登録が完了しました。");
	$myMsgArray[0]=$msgObj;
	
	$myTplData=array(
		'myLoginUser'		=>$myLoginUser,
		'myPageTitle'	=>'EGPUSERS_Entry',
		'myAppName'	=>'examples-egpusers',
	
		// 処理終了メッセージ
		'myMsgArray'		=>$myMsgArray,
		// 表示ボタン
		'button_array'	=>setButton()
	);

	// 後処理
	include("../Myznala/myFooter.inc.php");
	return;

	/*
	 * 入力チェックを行うための内部関数
	*/
	function validate($conn, $rParm, $egpObj){
		require_once('../Myznala/ErrorBean.class.php');
		// 入力必須チェック
		$eArr=array();
		$i=0;

		/* パスワード */
		// 入力必須チェック
		if($rParm['password'] == null || $rParm['password'] == ''){
			$eObj=new ErrorBean();
			$eObj->setField("パスワード");
			$eObj->setMessage("入力してください");
			$eArr[$i]=$eObj;
			$i++;
		}
		
		/* 名前 */
		// 入力必須チェック
		if($rParm['name'] == null || $rParm['name'] == ''){
			$eObj=new ErrorBean();
			$eObj->setField("名前");
			$eObj->setMessage("入力してください");
			$eArr[$i]=$eObj;
			$i++;
		}

		/* Email */
		// 入力必須チェック
		if($rParm['email'] == null || $rParm['email'] == ''){
			$eObj=new ErrorBean();
			$eObj->setField("Email");
			$eObj->setMessage("入力してください");
			$eArr[$i]=$eObj;
			$i++;
		}else{
			// ダブり入力チェック
			$ret = $egpObj->findEmail($conn, $rParm['email']);
			if($ret){
				$eObj=new ErrorBean();
				$eObj->setField("Email");
				$eObj->setMessage("既に登録されています");
				$eArr[$i]=$eObj;
				$i++;
			}
		}
		
		return $eArr;
	}

	/* 
	 * 次画面のボタン表示のための内部関数
	 */
	function setButton(){
		$bArr=array();
		require_once('../Myznala/ButtonBean.class.php');

		// 登録
		$bObj=new ButtonBean();
		$bObj->setId("egp-my-entry-button");
		$bObj->setName("entry");
		$bObj->setSrc("../images/list-add.png");
		$bObj->setAlt("登録の実行");
		$bArr[0]=$bObj;
		
		// 戻る
		$bObj=new ButtonBean();
		$bObj->setId("egp-my-back-button");
		$bObj->setName("back");
		$bObj->setSrc("../images/process-stop.png");
		$bObj->setAlt("戻る");
		$bArr[1]=$bObj;

		return $bArr;
	}
?>